//
// Created by sht on 2025/4/6.
//
#include <iostream>
#include <vector>
using namespace std;

class luogu1002
{
public:
    void test()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cin >> n >> m >> x >> y;
        vector<vector<int> > v(n + 1, vector<int>(m + 1, false));
        const int dx[] = {0, 1, 1, -1, -1, 2, 2, -2, -2};
        const int dy[] = {0, 2, -2, 2, -2, 1, -1, 1, -1};
        for (int i = 0; i < 9; ++i)
        {
            int nx = x + dx[i], ny = y + dy[i];
            if (nx >= 0 && nx <= n && ny >= 0 && ny <= m)
            {
                v[nx][ny] = true;
            }
        }
        if (v[0][0] || v[n][m])
        {
            cout << 0 << endl;
            return;
        }
        vector<vector<int> > dp(n + 1, vector<int>(m + 1, 0));
        dp[0][0] = 1;
        for (int i = 0; i <= n; ++i)
        {
            for (int j = 0; j <= m; ++j)
            {
                if (v[i][j]) continue;
                if (i > 0) dp[i][j] += dp[i - 1][j];
                if (j > 0) dp[i][j] += dp[i][j - 1];
            }
        }
        cout << dp[n][m] << endl;
    }

private:
    int n;
    int m;
    int x;
    int y;
    int sum = 0;
};

// int main()
// {
//     luogu1002().test();
//     return 0;
// }
